<?php
// Author: evilair
// Time : 2017/08/01

/********************************************
* 给定一个整数获得它的反序列
* 例如: 321 => 123 -321 => -123
* 正整数如果过大发生溢出咋办  例如 10000000000003 => 30000000000001
* 
*/
define('INT_MAX', 2147483647);
define('INT_MIN', (-INT_MAX -1));
echo INT_MIN;
function integer_reverse ($x) {
  // if ($x < 10) return $x;
  $y = 0;
  while ($x != 0) {
    $n = $x % 10;
    if ($y > INT_MAX/10 || $y < INT_MIN/10) {
      return 0;
    }
    $y = $y * 10 + $n;
    // echo $y."\n";
    if ($x > 0) { // 当大于0的时候向下取整
      $x = floor($x/10);
    } else { // 当小于0的时候想上取整
      $x = ceil($x/10);
    }
  }
  return $y;
}

echo integer_reverse(321);
echo "\n";
echo integer_reverse(-32545);
echo "\n";
echo integer_reverse(100000005);